﻿using System;
using System.Collections.Generic;

namespace WUDI.ECharts.Calendar
{
	/// <summary>
	/// Object
	/// 设置日历坐标中 星期轴的样式
	/// </summary>
	public class DayLabel
	{

		/// <summary>
		/// boolean
		/// 是否在普通状态下显示标签。
		/// </summary>
		public Boolean show { get; set; } = true;

		/// <summary>
		/// number
		/// 一周从周几开始，默认从周日开始
		/// 例如：
		/// calendar: [{
		///     dayLabel: {
		///         firstDay: 1 // 从周一开始
		///     }
		/// }]
		/// </summary>
		public int firstDay { get; set; } = 0;

		/// <summary>
		/// number
		/// 星期标签与轴线之间的距离
		/// </summary>
		public int margin { get; set; } = 0;

		/// <summary>
		/// string
		/// 星期的位置 在星期轴的开头还是结尾。
		/// 可选：
		/// 'start'
		/// 'end'
		/// </summary>
		public String position { get; set; } = "start";

		/// <summary>
		/// string,Array
		/// 星期显示的效果，默认为'en'
		/// 可设置中英文以及自定义
		/// 下标0为对应星期天的文字显示
		/// 使用示例：
		/// // 快捷设置英文 ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
		/// nameMap: 'en'
		/// // 快捷设置中文 ['日', '一', '二', '三', '四', '五', '六']
		/// nameMap: 'cn'
		/// // 自定义设置： 中英文混杂 或者不显示
		/// nameMap: ['S', '一', 'T', '三', '', '五', 'S'],
		/// calendar: [{
		///     dayLabel: {
		///         nameMap: 'en'
		///     }
		/// }]
		/// </summary>
		public dynamic nameMap { get; set; } = "en";

		/// <summary>
		/// Color
		/// 文字的颜色。
		/// </summary>
		public String color { get; set; } = "#000";

		/// <summary>
		/// string
		/// 文字字体的风格
		/// 可选：
		/// 'normal'
		/// 'italic'
		/// 'oblique'
		/// </summary>
		public FontStyle fontStyle { get; set; } = FontStyle.normal;

		/// <summary>
		/// string
		/// 文字字体的粗细
		/// 可选：
		/// 'normal'
		/// 'bold'
		/// 'bolder'
		/// 'lighter'
		/// 100 | 200 | 300 | 400...
		/// </summary>
		public dynamic fontWeight { get; set; } = FontWeight.normal;

		/// <summary>
		/// string
		/// 文字的字体系列
		/// 还可以是 'serif' , 'monospace', 'Arial', 'Courier New', 'Microsoft YaHei', ...
		/// </summary>
		public String fontFamily { get; set; } = "sans-serif";

		/// <summary>
		/// number
		/// 文字的字体大小
		/// </summary>
		public int fontSize { get; set; } = 12;

		/// <summary>
		/// string
		/// </summary>
		public Align align { get; set; }

		/// <summary>
		/// string
		/// </summary>
		public VerticalAlign verticalAlign { get; set; }

		/// <summary>
		/// number
		/// 行高。
		/// rich 中如果没有设置 lineHeight，则会取父层级的 lineHeight。例如：
		/// {
		///     lineHeight: 56,
		///     rich: {
		///         a: {
		///             // 没有设置 `lineHeight`，则 `lineHeight` 为 56
		///         }
		///     }
		/// }
		/// </summary>
		public int? lineHeight { get; set; }

		/// <summary>
		/// string,Object
		/// 文字块背景色。
		/// 可以是直接的颜色值，例如：'#123234', 'red', 'rgba(0,23,11,0.3)'。
		/// 可以支持使用图片，例如：
		/// backgroundColor: {
		///     image: 'xxx/xxx.png'
		///     // 这里可以是图片的 URL，
		///     // 或者图片的 dataURI，
		///     // 或者 HTMLImageElement 对象，
		///     // 或者 HTMLCanvasElement 对象。
		/// }
		/// 当使用图片的时候，可以使用 width 或 height 指定高宽，也可以不指定自适应。
		/// </summary>
		public dynamic backgroundColor { get; set; } = "transparent";

		/// <summary>
		/// string
		/// 文字块边框颜色。
		/// </summary>
		public String borderColor { get; set; } = "transparent";

		/// <summary>
		/// number
		/// 文字块边框宽度。
		/// </summary>
		public int borderWidth { get; set; } = 0;

		/// <summary>
		/// number,Array
		/// 文字块的圆角。
		/// </summary>
		public dynamic borderRadius { get; set; } = 0;

		/// <summary>
		/// number,Array
		/// 文字块的内边距。例如：
		/// padding: [3, 4, 5, 6]：表示 [上, 右, 下, 左] 的边距。
		/// padding: 4：表示 padding: [4, 4, 4, 4]。
		/// padding: [3, 4]：表示 padding: [3, 4, 3, 4]。
		/// 注意，文字块的 width 和 height 指定的是内容高宽，不包含 padding。
		/// </summary>
		public dynamic padding { get; set; } = 0;

		/// <summary>
		/// string
		/// 文字块的背景阴影颜色。
		/// </summary>
		public String shadowColor { get; set; } = "transparent";

		/// <summary>
		/// number
		/// 文字块的背景阴影长度。
		/// </summary>
		public int shadowBlur { get; set; } = 0;

		/// <summary>
		/// number
		/// 文字块的背景阴影 X 偏移。
		/// </summary>
		public int shadowOffsetX { get; set; } = 0;

		/// <summary>
		/// number
		/// 文字块的背景阴影 Y 偏移。
		/// </summary>
		public int shadowOffsetY { get; set; } = 0;

		/// <summary>
		/// number,string
		/// 文字块的宽度。一般不用指定，不指定则自动是文字的宽度。在想做表格项或者使用图片（参见 backgroundColor）时，可能会使用它。
		/// 注意，文字块的 width 和 height 指定的是内容高宽，不包含 padding。
		/// width 也可以是百分比字符串，如 '100%'。表示的是所在文本块的 contentWidth（即不包含文本块的 padding）的百分之多少。之所以以 contentWidth 做基数，因为每个文本片段只能基于 content box 布局。如果以 outerWidth 做基数，则百分比的计算在实用中不具有意义，可能会超出。
		/// 注意，如果不定义 rich 属性，则不能指定 width 和 height。
		/// </summary>
		public dynamic width { get; set; }

		/// <summary>
		/// number,string
		/// 文字块的高度。一般不用指定，不指定则自动是文字的高度。在使用图片（参见 backgroundColor）时，可能会使用它。
		/// 注意，文字块的 width 和 height 指定的是内容高宽，不包含 padding。
		/// 注意，如果不定义 rich 属性，则不能指定 width 和 height。
		/// </summary>
		public dynamic height { get; set; }

		/// <summary>
		/// string
		/// 文字本身的描边颜色。
		/// </summary>
		public String textBorderColor { get; set; } = "transparent";

		/// <summary>
		/// number
		/// 文字本身的描边宽度。
		/// </summary>
		public int textBorderWidth { get; set; } = 0;

		/// <summary>
		/// string
		/// 文字本身的阴影颜色。
		/// </summary>
		public String textShadowColor { get; set; } = "transparent";

		/// <summary>
		/// number
		/// 文字本身的阴影长度。
		/// </summary>
		public int textShadowBlur { get; set; } = 0;

		/// <summary>
		/// number
		/// 文字本身的阴影 X 偏移。
		/// </summary>
		public int textShadowOffsetX { get; set; } = 0;

		/// <summary>
		/// number
		/// 文字本身的阴影 Y 偏移。
		/// </summary>
		public int textShadowOffsetY { get; set; } = 0;

		/// <summary>
		/// Object
		/// 在 rich 里面，可以自定义富文本样式。利用富文本样式，可以在标签中做出非常丰富的效果。
		/// 例如：
		/// label: {
		///     // 在文本中，可以对部分文本采用 rich 中定义样式。
		///     // 这里需要在文本中使用标记符号：
		///     // `{styleName|text content text content}` 标记样式名。
		///     // 注意，换行仍是使用 '\n'。
		///     formatter: [
		///         '{a|这段文本采用样式a}',
		///         '{b|这段文本采用样式b}这段用默认样式{x|这段用样式x}'
		///     ].join('\n'),
		///     rich: {
		///         a: {
		///             color: 'red',
		///             lineHeight: 10
		///         },
		///         b: {
		///             backgroundColor: {
		///                 image: 'xxx/xxx.jpg'
		///             },
		///             height: 40
		///         },
		///         x: {
		///             fontSize: 18,
		///             fontFamily: 'Microsoft YaHei',
		///             borderColor: '#449933',
		///             borderRadius: 4
		///         },
		///         ...
		///     }
		/// }
		/// 详情参见教程：富文本标签
		/// </summary>
		public dynamic rich { get; set; }

	}
}
